namespace Wilco.CodeHilighter.Engine.SyntaxHighlighting
{
    using System;
    using System.Drawing;

    /// <summary>
    /// Represents a SQL syntax highlighter.
    /// </summary>
    public class SQLHighlighter : HighlighterBase
    {
        #region Constructors

        /// <summary>
        /// Initializes a new instance of a <see cref="Wilco.CodeHilighter.Engine.SyntaxHighlighting.SQLHighlighter"/> class.
        /// </summary>
        public SQLHighlighter()
            : this(null)
        {
            //
        }

        /// <summary>
        /// Initializes a new instance of a <see cref="Wilco.CodeHilighter.Engine.SyntaxHighlighting.SQLHighlighter"/> class.
        /// </summary>
        /// <param name="parser">The parser which will be used to parse the source code.</param>
        public SQLHighlighter(IParser parser)
            : base(parser)
        {
            this.Name = "SQL";
            this.FullName = "SQL";
            this.TagValues.AddRange(new String[] { "sql" });
            this.FileExtensions.Add("sql");
        }

        #endregion Constructors

        #region Methods

        /// <summary>
        /// Creates a new instance (clone) of this highlighter.
        /// </summary>
        /// <returns></returns>
        public override HighlighterBase Create()
        {
            return new SQLHighlighter(this.Parser);
        }

        /// <summary>
        /// Builds a comment line scanner.
        /// </summary>
        /// <returns>A <see cref="Wilco.CodeHilighter.Engine.SyntaxHighlighting.CommentLineScanner"/> object.</returns>
        protected override IScanner BuildCommentLineScanner()
        {
            CommentLineScanner scanner = new CommentLineScanner(this.Tokenizer, this.ScannerResult);
            scanner.CommentLineNode.ForeColor = Color.Green;
            scanner.CommentLineNode.Entities.Add("--");
            return scanner;
        }

        /// <summary>
        /// Builds a string scanner.
        /// </summary>
        /// <returns>The string scanner.</returns>
        protected override IScanner BuildStringScanner()
        {
            StringLineScanner stringScanner = (StringLineScanner)base.BuildStringScanner();
            stringScanner.StringNode.Entities.Add(new StringEntity("'", "'", "'"));
            return stringScanner;
        }

        /// <summary>
        /// Builds a word scanner.
        /// </summary>
        /// <returns>A <see cref="Wilco.CodeHilighter.Engine.SyntaxHighlighting.WordScanner"/> object.</returns>
        protected override IScanner BuildWordScanner()
        {
            WordScanner scanner = new WordScanner(this.Tokenizer, this.ScannerResult);
            scanner.WordNodes = new WordNode[2];
            scanner.WordNodes[0] = new WordNode();
            scanner.WordNodes[0].IgnoreCase = true;
            scanner.WordNodes[0].ForeColor = Color.Blue;
            scanner.WordNodes[0].Entities.AddRange(this.GetKeywords());
            scanner.WordNodes[0].NavigateUrl = "http://search.microsoft.com/default.asp?so=RECCNT&siteid=us%2Fdev&p=1&nq=NEW&qu={0}&IntlSearch=&boolean=PHRASE&ig=01&i=09&i=99";
            scanner.WordNodes[1] = new WordNode();
            scanner.WordNodes[1].IgnoreCase = true;
            scanner.WordNodes[1].ForeColor = Color.Orange;
            scanner.WordNodes[1].Entities.AddRange(this.GetStoredProcedures());
            scanner.WordNodes[1].NavigateUrl = "http://search.microsoft.com/default.asp?so=RECCNT&siteid=us%2Fdev&p=1&nq=NEW&qu={0}&IntlSearch=&boolean=PHRASE&ig=01&i=09&i=99";
            return scanner;
        }

        /// <summary>
        /// Gets an array of registered keywords.
        /// </summary>
        /// <returns>An array of keywords.</returns>
        private string[] GetKeywords()
        {
            string[] keywordList = new string[]
            {
                "RETURNS",
                "FUNCTION",
                "bigint",
                "binary",
                "bit",
                "char",
                "datetime",
                "decimal",
                "float",
                "image",
                "int",
                "money",
                "nchar",
                "ntext",
                "numeric",
                "nvarchar",
                "real",
                "smalldatetime",
                "smallint",
                "smallmoney",
                "sql_variant",
                "text",
                "timestamp",
                "tinyint",
                "uniqueidentifier",
                "varbinary",
                "varchar",
                "ADD",
                "EXIT",
                "PRIMARY",
                "ALL",
                "FETCH",
                "PRINT",
                "ALTER",
                "FILE",
                "PRIVILEGES",
                "AND",
                "FILLFACTOR",
                "PROC",
                "ANY",
                "FLOPPY",
                "PROCEDURE",
                "AS",
                "FOR",
                "PROCESSEXIT",
                "ASC",
                "FOREIGN",
                "PUBLIC",
                "AUTHORIZATION",
                "FREETEXT",
                "RAISERROR",
                "AVG",
                "FREETEXTTABLE",
                "READ",
                "BACKUP",
                "FROM",
                "READTEXT",
                "BEGIN",
                "FULL",
                "RECONFIGURE",
                "BETWEEN",
                "GOTO",
                "REFERENCES",
                "BREAK",
                "GRANT",
                "REPEATABLE",
                "BROWSE",
                "GROUP",
                "REPLICATION",
                "BULK",
                "HAVING",
                "RESTORE",
                "BY",
                "HOLDLOCK",
                "RESTRICT",
                "CASCADE",
                "IDENTITY",
                "RETURN",
                "CASE",
                "IDENTITY_INSERT",
                "REVOKE",
                "CHECK",
                "IDENTITYCOL",
                "RIGHT",
                "CHECKPOINT",
                "IF",
                "ROLLBACK",
                "CLOSE",
                "IN",
                "ROWCOUNT",
                "CLUSTERED",
                "INDEX",
                "ROWGUIDCOL",
                "COALESCE",
                "INNER",
                "RULE",
                "COLUMN",
                "INSERT",
                "SAVE",
                "COMMIT",
                "INTERSECT",
                "SCHEMA",
                "COMMITTED",
                "INTO",
                "SELECT",
                "COMPUTE",
                "IS",
                "SERIALIZABLE",
                "CONFIRM",
                "ISOLATION",
                "SESSION_USER",
                "CONSTRAINT",
                "JOIN",
                "SET",
                "CONTAINS",
                "KEY",
                "SETUSER",
                "CONTAINSTABLE",
                "KILL",
                "SHUTDOWN",
                "CONTINUE",
                "LEFT",
                "SOME",
                "CONTROLROW",
                "LEVEL",
                "STATISTICS",
                "CONVERT",
                "LIKE",
                "SUM",
                "COUNT",
                "LINENO",
                "SYSTEM_USER",
                "CREATE",
                "LOAD",
                "TABLE",
                "CROSS",
                "MAX",
                "TAPE",
                "CURRENT",
                "MIN",
                "TEMP",
                "CURRENT_DATE",
                "MIRROREXIT",
                "TEMPORARY",
                "CURRENT_TIME",
                "NATIONAL",
                "TEXTSIZE",
                "CURRENT_TIMESTAMP",
                "NOCHECK",
                "THEN",
                "CURRENT_USER",
                "NONCLUSTERED",
                "TO",
                "CURSOR",
                "NOT",
                "TOP",
                "DATABASE",
                "NULL",
                "TRAN",
                "DBCC",
                "NULLIF",
                "TRANSACTION",
                "DEALLOCATE",
                "OF",
                "TRIGGER",
                "DECLARE",
                "OFF",
                "TRUNCATE",
                "DEFAULT",
                "OFFSETS",
                "TSEQUAL",
                "DELETE",
                "ON",
                "UNCOMMITTED",
                "DENY",
                "ONCE",
                "UNION",
                "DESC",
                "ONLY",
                "UNIQUE",
                "DISK",
                "OPEN",
                "UPDATE",
                "DISTINCT",
                "OPENDATASOURCE",
                "UPDATETEXT",
                "DISTRIBUTED",
                "OPENQUERY",
                "USE",
                "DOUBLE",
                "OPENROWSET",
                "USER",
                "DROP",
                "OPTION",
                "VALUES",
                "DUMMY",
                "OR",
                "VARYING",
                "DUMP",
                "ORDER",
                "VIEW",
                "ELSE",
                "OUTER",
                "WAITFOR",
                "END",
                "OVER",
                "WHEN",
                "ERRLVL",
                "PERCENT",
                "WHERE",
                "ERROREXIT",
                "PERM",
                "WHILE",
                "ESCAPE",
                "PERMANENT",
                "WITH",
                "EXCEPT",
                "PIPE",
                "WORK",
                "EXEC",
                "PLAN",
                "WRITETEXT",
                "EXECUTE",
                "PRECISION",
                "EXISTS",
                "PREPARE",
                "ABSOLUTE",
                "EXEC",
                "OVERLAPS",
                "ACTION",
                "EXECUTE",
                "PAD",
                "ADA",
                "EXISTS",
                "PARTIAL",
                "ADD",
                "EXTERNAL",
                "PASCAL",
                "ALL",
                "EXTRACT",
                "POSITION",
                "ALLOCATE",
                "FALSE",
                "PRECISION",
                "ALTER",
                "FETCH",
                "PREPARE",
                "AND",
                "FIRST",
                "PRESERVE",
                "ANY",
                "FLOAT",
                "PRIMARY",
                "ARE",
                "FOR",
                "PRIOR",
                "AS",
                "FOREIGN",
                "PRIVILEGES",
                "ASC",
                "FORTRAN",
                "PROCEDURE",
                "ASSERTION",
                "FOUND",
                "PUBLIC",
                "AT",
                "FROM",
                "READ",
                "AUTHORIZATION",
                "FULL",
                "REAL",
                "AVG",
                "GET",
                "REFERENCES",
                "BEGIN",
                "GLOBAL",
                "RELATIVE",
                "BETWEEN",
                "GO",
                "RESTRICT",
                "BIT",
                "GOTO",
                "REVOKE",
                "BIT_LENGTH",
                "GRANT",
                "RIGHT",
                "BOTH",
                "GROUP",
                "ROLLBACK",
                "BY",
                "HAVING",
                "ROWS",
                "CASCADE",
                "HOUR",
                "SCHEMA",
                "CASCADED",
                "IDENTITY",
                "SCROLL",
                "CASE",
                "IMMEDIATE",
                "SECOND",
                "CAST",
                "IN",
                "SECTION",
                "CATALOG",
                "INCLUDE",
                "SELECT",
                "CHAR",
                "INDEX",
                "SESSION",
                "CHAR_LENGTH",
                "INDICATOR",
                "SESSION_USER",
                "CHARACTER",
                "INITIALLY",
                "SET",
                "CHARACTER_LENGTH",
                "INNER",
                "SIZE",
                "CHECK",
                "INPUT",
                "SMALLINT",
                "CLOSE",
                "INSENSITIVE",
                "SOME",
                "COALESCE",
                "INSERT",
                "SPACE",
                "COLLATE",
                "INT",
                "SQL",
                "COLLATION",
                "INTEGER",
                "SQLCA",
                "COLUMN",
                "INTERSECT",
                "SQLCODE",
                "COMMIT",
                "INTERVAL",
                "SQLERROR",
                "CONNECT",
                "INTO",
                "SQLSTATE",
                "CONNECTION",
                "IS",
                "SQLWARNING",
                "CONSTRAINT",
                "ISOLATION",
                "SUBSTRING",
                "CONSTRAINTS",
                "JOIN",
                "SUM",
                "CONTINUE",
                "KEY",
                "SYSTEM_USER",
                "CONVERT",
                "LANGUAGE",
                "TABLE",
                "CORRESPONDING",
                "LAST",
                "TEMPORARY",
                "COUNT",
                "LEADING",
                "THEN",
                "CREATE",
                "LEFT",
                "TIME",
                "CROSS",
                "LEVEL",
                "TIMESTAMP",
                "CURRENT",
                "LIKE",
                "TIMEZONE_HOUR",
                "CURRENT_DATE",
                "LOCAL",
                "TIMEZONE_MINUTE",
                "CURRENT_TIME",
                "LOWER",
                "TO",
                "CURRENT_TIMESTAMP",
                "MATCH",
                "TRAILING",
                "CURRENT_USER",
                "MAX",
                "TRANSACTION",
                "CURSOR",
                "MIN",
                "TRANSLATE",
                "DATE",
                "MINUTE",
                "TRANSLATION",
                "DAY",
                "MODULE",
                "TRIM",
                "DEALLOCATE",
                "MONTH",
                "TRUE",
                "DEC",
                "NAMES",
                "UNION",
                "DECIMAL",
                "NATIONAL",
                "UNIQUE",
                "DECLARE",
                "NATURAL",
                "UNKNOWN",
                "DEFAULT",
                "NCHAR",
                "UPDATE",
                "DEFERRABLE",
                "NEXT",
                "UPPER",
                "DEFERRED",
                "NO",
                "USAGE",
                "DELETE",
                "NONE",
                "USER",
                "DESC",
                "NOT",
                "USING",
                "DESCRIBE",
                "NULL",
                "VALUE",
                "DESCRIPTOR",
                "NULLIF",
                "VALUES",
                "DIAGNOSTICS",
                "NUMERIC",
                "VARCHAR",
                "DISCONNECT",
                "OCTET_LENGTH",
                "VARYING",
                "DISTINCT",
                "OF",
                "VIEW",
                "DOMAIN",
                "ON",
                "WHEN",
                "DOUBLE",
                "ONLY",
                "WHENEVER",
                "DROP",
                "OPEN",
                "WHERE",
                "ELSE",
                "OPTION",
                "WITH",
                "END",
                "OR",
                "WORK",
                "END-EXEC",
                "ORDER",
                "WRITE",
                "ESCAPE",
                "OUTER",
                "YEAR",
                "EXCEPT",
                "OUTPUT",
                "ZONE",
                "EXCEPTION"
            };

            Array.Sort(keywordList);
            Array.Reverse(keywordList);

            return keywordList;
        }

        /// <summary>
        /// Gets an array of registered stored procedures.
        /// </summary>
        /// <returns>An array of stored procedures.</returns>
        private string[] GetStoredProcedures()
        {
            string[] spList = new String[]
            {
                "sp_dropsubscriber",
                "sp_remove_tempdb_file",
                "sp_vupgrade_subscription_tables",
                "sp_MS_marksystemobject",
                "sp_MSvalidatearticle",
                "sp_MSreplcheckoffloadserver",
                "sp_helpmergesubscription",
                "xp_getfiledetails",
                "sp_MSscript_insert_subwins",
                "sp_dsninfo",
                "sp_rename",
                "sp_vupgrade_mergetables",
                "sp_MS_upd_sysobj_category",
                "sp_MSsubscriptionvalidated",
                "fn_repluniquename",
                "sp_dropmergesubscription",
                "xp_servicecontrol",
                "sp_MSis_identity_insert",
                "sp_publishdb",
                "sp_resetstatus",
                "sp_vupgrade_subpass",
                "sp_db_upgrade",
                "sp_MSdroparticletombstones",
                "sp_MSget_file_existence",
                "sp_MShelpvalidationdate",
                "xp_availablemedia",
                "sp_MSscript_compensating_send",
                "sp_MScreate_dist_tables",
                "sp_add_file_recover_suspect_db",
                "sp_vupgrade_MSsubscription_properties",
                "sp_MSproxiedmetadata",
                "sp_MSrepl_isdbowner",
                "sp_MSmergepublishdb",
                "xp_dirtree",
                "sp_MSscript_insert_pubwins",
                "sp_special_columns",
                "sp_MSupdate_mqserver_distdb",
                "sp_add_data_file_recover_suspect_db",
                "sp_vupgrade_replication",
                "sp_MScontractsubsnb",
                "sp_resyncmergesubscription",
                "sp_enumcustomresolvers",
                "xp_eventlog",
                "sp_MSscript_update_statement",
                "sp_MSadd_distributor_alerts_and_responses",
                "sp_add_log_file_recover_suspect_db",
                "sp_vupgrade_distdb",
                "sp_MSexpandsubsnb",
                "sp_MSget_qualified_name",
                "sp_changemergefilter",
                "sp_eventlog",
                "sp_MSscript_update_subwins",
                "sp_MSdrop_distributor_alerts_and_responses",
                "sp_spaceused",
                "sp_vupgrade_publisher",
                "sp_MSdelsubrows",
                "sp_MSdrop_object",
                "sp_addmergefilter",
                "xp_fixeddrives",
                "sp_MSscript_update_pubwins",
                "sp_adddistributor",
                "sp_sqlexec",
                "sp_vupgrade_syscol_status",
                "sp_MSdelsubrowsbatch",
                "sp_isarticlecolbitset",
                "sp_dropmergefilter",
                "xp_subdirs",
                "sp_MSscript_delete_statement",
                "sp_sproc_columns",
                "sp_changedistributor_property",
                "sp_unbindefault",
                "sp_vupgrade_publisherdb",
                "sp_MSmakeviewproc",
                "sp_getarticlepkcolbitmap",
                "sp_helpmergefilter",
                "xp_getnetname",
                "sp_MSscript_delete_subwins",
                "sp_helpdistributor_properties",
                "sp_unbindrule",
                "sp_vupgrade_replmsdb",
                "sp_MScreatebeforetable",
                "sp_MSsubst_filter_name",
                "sp_MSscript_dri",
                "sp_IsMBCSLeadByte",
                "sp_MSscript_compensating_insert",
                "sp_dropdistributor",
                "sp_who",
                "sp_restoredbreplication",
                "sp_dropextendedproc",
                "sp_MShelpcreatebeforetable",
                "sp_MSsubst_filter_names",
                "sp_MSenumpubreferences",
                "sp_GetMBCSCharLen",
                "sp_MSscript_delete_pubwins",
                "sp_statistics",
                "sp_helpdistributiondb",
                "sp_who2",
                "sp_MSget_publisher_rpc",
                "sp_addextendedproc",
                "sp_MShelpalterbeforetable",
                "sp_MSreplcheck_name",
                "sp_MSsubsetpublication",
                "xp_sqlagent_monitor",
                "sp_MSscript_beginproc",
                "sp_changedistributiondb",
                "sp_check_removable",
                "sp_link_publication",
                "sp_helpextendedproc",
                "sp_MSgetbeforetableinsert",
                "sp_MScheckvalidsystables",
                "sp_MSindexcolfrombin",
                "xp_sqlagent_notify",
                "sp_MSscript_security",
                "sp_dropdistributiondb",
                "sp_certify_removable",
                "sp_MSreset_queue",
                "xp_cmdshell",
                "sp_MSfixupbeforeimagetables",
                "sp_MSdrop_mergesystables",
                "sp_MSmakejoinfilter",
                "xp_sqlagent_enum_jobs",
                "sp_MSscript_endproc",
                "sp_stored_procedures",
                "sp_adddistributiondb",
                "MS_sqlctrs_users",
                "sp_MSreset_queued_reinit",
                "xp_logevent",
                "sp_MSreplcheck_permission",
                "sp_MScreate_mergesystables",
                "sp_MSmakeexpandproc",
                "xp_sqlagent_is_starting",
                "sp_MStable_not_modifiable",
                "sp_dropdistpublisher",
                "sp_autostats",
                "sp_MSinit_subscription_agent",
                "xp_sprintf",
                "sp_MSinserterrorlineage",
                "sp_MStestbit",
                "sp_MSdrop_expired_mergesubscription",
                "xp_sqlagent_param",
                "sp_MSscript_ExecutionMode_stmt",
                "sp_adddistpublisher",
                "sp_updatestats",
                "sp_MSupdatelastsyncinfo",
                "xp_sscanf",
                "sp_MSevalsubscriberinfo",
                "sp_MSsetbit",
                "sp_MScleanup_metadata",
                "xp_sqlagent_proxy_account",
                "sp_MSscript_sync_ins_proc",
                "sp_table_privileges",
                "sp_changedistpublisher",
                "sp_createstats",
                "sp_MSget_attach_state",
                "xp_msver",
                "sp_MSsetsubscriberinfo",
                "sp_MSinsertcontents",
                "sp_helpmergecleanupwait",
                "xp_enum_activescriptengines",
                "sp_MSscript_sync_upd_proc",
                "sp_helpdistpublisher",
                "sp_cycle_errorlog",
                "sp_MSreset_attach_state",
                "xp_enumgroups",
                "sp_MSgetsubscriberinfo",
                "sp_MSupdatecontents",
                "sp_MSquiescecheck",
                "xp_fileexist",
                "sp_MSscript_sync_del_proc",
                "sp_tables",
                "sp_add_agent_profile",
                "sp_helptrigger",
                "sp_MSset_subscription_properties",
                "xp_loginconfig",
                "sp_MSmakectsview",
                "sp_MSdeletecontents",
                "sp_mergepreparecleanup",
                "xp_ntsec_enumdomains",
                "sp_MSscript_pub_upd_trig",
                "sp_linkedservers",
                "sp_drop_agent_parameter",
                "sp_fixindex",
                "sp_MSset_sub_guid",
                "sp_cursor",
                "sp_MSinsertgenerationschemachanges",
                "sp_MSunmarkifneeded",
                "sp_MSpreparecleanup",
                "xp_terminate_process",
                "sp_MSmakeconflicttable",
                "sp_catalogs",
                "sp_drop_agent_profile",
                "sp_settriggerorder",
                "sp_MScreate_sub_tables",
                "sp_cursorclose",
                "sp_MSalreadyhavegeneration",
                "sp_MSunmarkreplinfo",
                "sp_MSquiescetriggerson",
                "xp_msx_enlist",
                "sp_scriptsubconflicttable",
                "sp_tables_ex",
                "sp_help_agent_profile",
                "fn_listextendedproperty",
                "sp_MSupdate_mqserver_subdb",
                "sp_cursorfetch",
                "sp_MSgettablecontents",
                "sp_MSmarkreplinfo",
                "sp_MSquiescetriggersoff",
                "xp_sqlmaint",
                "sp_MSgen_sync_tran_procs",
                "sp_help_agent_default",
                "sp_validatepropertyinputs",
                "sp_MS_replication_installed",
                "sp_cursoropen",
                "sp_MSdelgenzero",
                "sp_MSunmarkschemaobject",
                "sp_MSquiesceforcleanup",
                "xp_get_tape_devices",
                "sp_articlesynctranprocs",
                "sp_columns_ex",
                "sp_MSupdate_agenttype_default",
                "sp_addextendedproperty",
                "sp_MSunc_to_drive",
                "sp_cursoroption",
                "sp_MSmakedynsnapshotvws",
                "sp_MSmarkschemaobject",
                "sp_mergecompletecleanup",
                "xp_enum_oledb_providers",
                "sp_reinitsubscription",
                "sp_table_privileges_ex",
                "sp_generate_agent_parameter",
                "sp_updateextendedproperty",
                "sp_MSretrieve_publication_attributes",
                "sp_bindsession",
                "sp_MSdropdynsnapshotvws",
                "sp_MSaddanonymousreplica",
                "sp_MScompletecleanup",
                "sp_enum_oledb_providers",
                "sp_MSareallcolumnscomputed",
                "sp_column_privileges_ex",
                "sp_MSvalidate_agent_parameter",
                "sp_dropextendedproperty",
                "sp_MScleanup_publication_ADinfo",
                "sp_getbindtoken",
                "sp_MSgetreplicainfo",
                "sp_MSpropagateschematorepubs",
                "xp_prop_oledb_provider",
                "sp_MSgettypestringudt",
                "sp_indexes",
                "sp_add_agent_parameter",
                "sp_addlogin",
                "sp_MSrepl_linkedservers_rowset",
                "sp_createorphan",
                "pk_dtproperties",
                "sp_MSadd_repl_job",
                "sp_mergecleanupmetadata",
                "sp_prop_oledb_provider",
                "sp_gettypestring",
                "sp_foreignkeys",
                "sp_change_agent_parameter",
                "sp_password",
                "sp_MSregistersubscription",
                "sp_droporphans",
                "DF__dtpropert__versi__1B13F4C6",
                "sp_MScheck_subscription",
                "sp_MScleanup_conflict_table",
                "xp_updateFTSSQLAccount",
                "sp_scriptpkwhereclause",
                "sp_primarykeys",
                "sp_change_agent_profile",
                "sp_droplogin",
                "sp_MSunregistersubscription",
                "sp_xml_preparedocument",
                "dt_generateansiname",
                "sp_MSgettools_path",
                "sp_validatemergesubscription",
                "sp_MSgetversion",
                "sp_MSscript_missing_row_check",
                "sp_help_agent_parameter",
                "sp_MSaddlogin_implicit_ntlogin",
                "sp_MSsubscription_enabled_for_syncmgr",
                "sp_xml_removedocument",
                "dt_adduserobject",
                "sp_replicationoption",
                "sp_validatemergepublication",
                "xp_unc_to_drive",
                "sp_scriptupdateparams",
                "sp_MShelp_distdb",
                "sp_grantlogin",
                "sp_MSget_jobstate",
                "sp_trace_create",
                "dt_setpropertybyid",
                "sp_helpreplicationoption",
                "sp_MScleanup_conflict",
                "xp_MSplatform",
                "sp_scriptreconwhereclause",
                "sp_ddopen",
                "sp_MSupdate_replication_status",
                "sp_validatelogins",
                "sp_MSscript_pkvar_assignment",
                "sp_trace_setevent",
                "dt_getobjwithprop",
                "sp_MSgetreplnick",
                "sp_generatefilters",
                "xp_MSFullText",
                "sp_script_reconciliation_insproc",
                "sp_MSenum_misc_agents",
                "xp_grantlogin",
                "sp_MSget_publication_from_taskname",
                "sp_trace_setfilter",
                "dt_getpropertiesbyid",
                "sp_MSreplcheck_publish",
                "sp_MShelpmergeconflictcounts",
                "xp_IsNTAdmin",
                "sp_script_reconciliation_delproc",
                "sp_tableswc",
                "sp_MSload_replication_status",
                "sp_denylogin",
                "sp_MSacquireHeadofQueueLock",
                "sp_trace_setstatus",
                "dt_setpropertybyid_u",
                "sp_MSlocktable",
                "sp_MShelpmergeconflictpublications",
                "xp_SetSQLSecurity",
                "sp_script_reconciliation_xdelproc",
                "sp_MScreate_replication_status_table",
                "sp_revokelogin",
                "sp_MSacquireSlotLock",
                "sp_trace_generateevent",
                "dt_getobjwithprop_u",
                "sp_MSenumcolumns",
                "sp_MSclearcolumnbit",
                "xp_GetAdminGroupName",
                "sp_scriptinsproc",
                "sp_add_server_sortinfo",
                "sp_MShelp_replication_status",
                "xp_revokelogin",
                "sp_MSreleaseSlotLock",
                "sp_sdidebug",
                "dt_getpropertiesbyid_u",
                "sp_MSsetaccesslist",
                "sp_helpmergearticleconflicts",
                "xp_MSnt2000",
                "sp_scriptdelproc",
                "sp_add_server_sortinfo75",
                "sp_MSenum_replication_agents",
                "sp_defaultdb",
                "sp_MSrepl_check_server",
                "sp_executesql",
                "dt_dropuserobjectbyid",
                "sp_MSreplcheck_pull",
                "sp_helpmergeconflictrows",
                "xp_MSADEnabled",
                "sp_scriptxdelproc",
                "sp_replication_agent_checkup",
                "sp_defaultlanguage",
                "sp_MSreset_synctran_bit",
                "xp_userlock",
                "dt_droppropertiesbyid",
                "sp_MSreplcheck_connection",
                "sp_helpmergedeleteconflictrows",
                "xp_MSADSIReg",
                "sp_scriptupdproc",
                "sp_catalogs_rowset",
                "sp_MScreate_replication_checkup_agent",
                "sp_addsrvrolemember",
                "sp_MSenum_replsqlqueues",
                "sp_prepare",
                "dt_verstamp006",
                "sp_MSreplcheck_qv",
                "sp_deletemergeconflictrow",
                "xp_MSADSIObjReg",
                "sp_scriptmappedupdproc",
                "sp_MSenum_replication_job",
                "sp_dropsrvrolemember",
                "sp_MSenum_replqueues",
                "sp_execute",
                "dt_verstamp007",
                "sp_reinitmergepullsubscription",
                "sp_getmergedeletetype",
                "xp_MSADSIObjRegDB",
                "sp_scriptdynamicupdproc",
                "sp_column_privileges_rowset",
                "sp_MSrepl_dbrole",
                "sp_MSadduser_implicit_ntlogin",
                "sp_browsemergesnapshotfolder",
                "sp_prepexec",
                "dt_getpropertiesbyid_vcs",
                "sp_MSreplcheck_subscribe",
                "sp_mergedummyupdate",
                "xp_MSLocalSystem",
                "sp_scriptxupdproc",
                "sp_changedistributor_password",
                "sp_MScheck_uid_owns_anything",
                "sp_browsesnapshotfolder",
                "sp_prepexecrpc",
                "dt_displayoaerror",
                "sp_MSreplicationcompatlevel",
                "sp_addtabletocontents",
                "xp_adsirequest",
                "sp_MSscriptmvastablenci",
                "sp_oledbinfo",
                "sp_grantdbaccess",
                "sp_MScopysnapshot",
                "sp_unprepare",
                "dt_adduserobject_vcs",
                "sp_MShelp_identity_property",
                "sp_MSaddpubtocontents",
                "sp_ActiveDirectory_Start",
                "sp_MSscriptmvastablepkc",
                "sp_columns_rowset",
                "sp_MSget_oledbinfo",
                "sp_adduser",
                "sp_copymergesnapshot",
                "sp_cursorprepare",
                "dt_addtosourcecontrol",
                "sp_MSgenreplnickname",
                "sp_MSget_subtypedatasrc",
                "sp_ActiveDirectory_SCP",
                "sp_MSscriptmvastableidx",
                "sp_grant_publication_access",
                "sp_revokedbaccess",
                "sp_copysnapshot",
                "sp_cursorexecute",
                "dt_checkinobject",
                "sp_MSmergesubscribedb",
                "sp_addmergealternatepublisher",
                "sp_ActiveDirectory_Obj",
                "sp_MSscriptmvastable",
                "sp_check_constraints_rowset",
                "sp_revoke_publication_access",
                "sp_dropuser",
                "sp_MSrepl_validate_dts_package",
                "sp_cursorprepexec",
                "dt_checkoutobject",
                "sp_MSenumallsubscriptions",
                "sp_helpmergealternatepublisher",
                "sp_MSget_current_activity",
                "sp_fetchshowcmdsinput",
                "sp_help_publication_access",
                "sp_addalias",
                "sp_MSget_load_hint",
                "sp_cursorunprepare",
                "dt_isundersourcecontrol",
                "sp_MSenumsubscriptions",
                "sp_dropmergealternatepublisher",
                "sp_MSset_current_activity",
                "sp_replshowcmds",
                "sp_check_constbytable_rowset",
                "sp_check_publication_access",
                "sp_dropalias",
                "sp_getsubscriptiondtspackagename",
                "sp_reset_connection",
                "dt_removefromsourcecontrol",
                "sp_MSenumallpublications",
                "sp_MScomputemergearticlescreationorder",
                "sp_MSobjsearch",
                "sp_article_validation",
                "sp_MSget_agent_names",
                "sp_addrole",
                "sp_MSverifytranfilter",
                "sp_getschemalock",
                "dt_validateloginparams",
                "sp_MSenumtranpublications",
                "sp_MScomputemergeunresolvedrefs",
                "sp_MShasdbaccess",
                "sp_publication_validation",
                "sp_foreign_keys_rowset",
                "sp_MSinit_replication_perfmon",
                "sp_addgroup",
                "sp_repldropcolumn",
                "sp_releaseschemalock",
                "dt_vcsenabled",
                "sp_MSenummergepublications",
                "sp_MSCheckmergereplication",
                "sp_resolve_logins",
                "sp_marksubscriptionvalidation",
                "sp_MSrepl_startup",
                "sp_droprole",
                "sp_repladdcolumn",
                "sp_resyncprepare",
                "dt_whocheckedout",
                "sp_MSenum3rdpartypublications",
                "sp_MSgetpubinfo",
                "sp_MShelpcolumns",
                "sp_dropanonymousagent",
                "sp_MSflush_access_cache",
                "sp_dropgroup",
                "sp_MSagent_access_check",
                "sp_resyncexecute",
                "dt_getpropertiesbyid_vcs_u",
                "sp_MSenumthirdpartypublicationvendornames",
                "sp_MSaddmergedynamicsnapshotjob",
                "sp_MShelpindex",
                "sp_replrestart",
                "sp_indexes_rowset",
                "sp_MSreinit_failed_subscriptions",
                "sp_addapprole",
                "sp_enableagentoffload",
                "sp_resyncexecutesql",
                "dt_displayoaerror_u",
                "sp_reinitpullsubscription",
                "sp_MSdropmergedynamicsnapshotjob",
                "sp_MShelptype",
                "sp_MSpub_adjust_identity",
                "sp_add_datatype_mapping",
                "sp_approlepassword",
                "sp_disableagentoffload",
                "sp_resyncuniquetable",
                "dt_addtosourcecontrol_u",
                "sp_addpullsubscription",
                "sp_MShelpmergedynamicsnapshotjob",
                "sp_MSdependencies",
                "sp_helparticledts",
                "sp_primary_keys_rowset",
                "sp_MSrepl_gettype_mappings",
                "sp_setapprole",
                "sp_getagentoffloadinfo",
                "sp_refreshview",
                "dt_checkinobject_u",
                "sp_MSupdatesharedagentproperties",
                "sp_MSremove_userscript",
                "sp_MStablespace",
                "sp_changesubscriptiondtsinfo",
                "sp_help_datatype_mapping",
                "sp_dropapprole",
                "sp_copysubscription",
                "sp_user_counter1",
                "dt_checkoutobject_u",
                "sp_replicationdboption",
                "sp_MSdrop_rlrecon",
                "sp_MSindexspace",
                "sp_MSdrop_6x_replication_agent",
                "sp_provider_types_rowset",
                "sp_MSfix_6x_tasks",
                "sp_addrolemember",
                "sp_attachsubscription",
                "sp_user_counter2",
                "dt_isundersourcecontrol_u",
                "sp_MSfixupdistributorinfo",
                "sp_MSfetchidentityrange",
                "sp_MStablerefs",
                "sp_MSreinit_article",
                "sp_MShelpconflictpublications",
                "sp_droprolemember",
                "sp_MSrestore_sub_merge",
                "sp_user_counter3",
                "dt_validateloginparams_u",
                "sp_MSfixupdistributorsecurity",
                "sp_MScheckidentityrange",
                "sp_MStablekeys",
                "sp_MScomputearticlescreationorder",
                "fn_replgetagentcommandlinefromjobid",
                "sp_changegroup",
                "sp_MSrestore_sub_tran",
                "sp_user_counter4",
                "dt_whocheckedout_u",
                "sp_MSfixupftpinfo",
                "sp_MShelpmergeidentity",
                "sp_MStablechecks",
                "sp_MScomputeunresolvedrefs",
                "sp_procedure_params_rowset",
                "sp_replproberemoteserver",
                "sp_change_users_login",
                "sp_MSrestore_sub",
                "sp_user_counter5",
                "sp_generate_inserts",
                "sp_MSfixupaltsnapshotfolder",
                "sp_MShelpmergearticles",
                "sp_MSsettopology",
                "sp_MShelptranconflictpublications",
                "sp_MScleanupmergepublisher",
                "sp_changedbowner",
                "sp_validatemergepullsubscription",
                "sp_user_counter6",
                "sp_MSfixupworkingdirectory",
                "sp_MShelpmergeschemaarticles",
                "sp_MSmatchkey",
                "sp_MShelptranconflictcounts",
                "sp_MScleanupdynsnapshotvws",
                "sp_check_removable_sysusers",
                "sp_MSprepare_sub_for_detach",
                "sp_user_counter7",
                "sp_MSfixupuseftp",
                "sp_MScreateretry",
                "sp_MSforeach_worker",
                "sp_MSgettranconflictrow",
                "sp_procedures_rowset",
                "sp_MScleanupmergepublisherdb",
                "sp_changeobjectowner",
                "sp_MSsub_check_identity",
                "sp_user_counter8",
                "sp_MSfixupagentoffloadinfo",
                "sp_MSdropretry",
                "sp_MSforeachdb",
                "sp_MSgettrancftsrcrow",
                "sp_MShelp_replication_table",
                "sp_helpsrvrole",
                "sp_MSsub_cleanup_orphans",
                "sp_user_counter9",
                "sp_MSfixupsharedagentproperties",
                "sp_MSdroptemptable",
                "sp_MSforeachtable",
                "sp_MSdeletetranconflictrow",
                "sp_schemata_rowset",
                "sp_MScopyscriptfile",
                "sp_srvrolepermission",
                "sp_MSsub_cleanup_prop_table",
                "sp_user_counter10",
                "sp_addpullsubscription_agent",
                "sp_MSchangearticleresolver",
                "sp_MSloginmappings",
                "sp_MSexternalfkreferences",
                "sp_repldone",
                "sp_helpsrvrolemember",
                "sp_MSreseed",
                "sp_blockcnt",
                "sp_helpsubscription_properties",
                "sp_MSenumretries",
                "sp_MSuniquename",
                "sp_MSgetarticlereinitvalue",
                "sp_statistics_rowset",
                "sp_repltrans",
                "sp_helpdbfixedrole",
                "sp_MSsub_set_identity",
                "sp_tempdbspace",
                "sp_change_subscription_properties",
                "sp_MSdeleteretry",
                "sp_MSkilldb",
                "sp_MSispkupdateinconflict",
                "sp_replcounters",
                "sp_dbfixedrolepermission",
                "sp_MSinstance_qv",
                "sp_dboption",
                "sp_MSget_pullsubsagent_owner",
                "sp_MSdeletepushagent",
                "sp_MSobjectprivs",
                "sp_ivindexhasnullcols",
                "sp_tables_rowset",
                "sp_replcmds",
                "sp_helprolemember",
                "sp_MSget_shared_agent",
                "sp_dbcmptlevel",
                "sp_droppullsubscription",
                "sp_MSgetonerow",
                "sp_MSSQLDMO80_version",
                "fn_sqlvarbasetostr",
                "sp_replflush",
                "sp_helprole",
                "sp_MSrepl_backup_start",
                "sp_fallback_MS_sel_fb_svr",
                "sp_helppullsubscription",
                "sp_MSuplineageversion",
                "sp_MSSQLDMO70_version",
                "sp_replqueuemonitor",
                "sp_replpostcmd",
                "sp_helpntgroup",
                "sp_MSrepl_backup_complete",
                "sp_validname",
                "sp_MStable_has_unique_index",
                "sp_MSgetlastrecgen",
                "sp_MSSQLOLE65_version",
                "sp_replsqlqgetrows",
                "sp_tables_info_rowset",
                "sp_replpostschema",
                "xp_logininfo",
                "sp_MSadd_compensating_cmd",
                "sp_validlang",
                "sp_MSchange_retention",
                "sp_MSgetlastsentgen",
                "sp_MSSQLOLE_version",
                "sp_MSpost_auto_proc",
                "sp_replincrementlsn",
                "sp_addlinkedserver",
                "fn_varbintohexstr",
                "sp_addmessage",
                "sp_MSchange_priority",
                "sp_MSgetlastsentrecgens",
                "sp_MSscriptdatabase",
                "sp_MSrepl_schema",
                "sp_replupdateschema",
                "sp_dropserver",
                "fn_varbintohexsubstring",
                "sp_addumpdevice",
                "sp_expired_subscription_cleanup",
                "sp_MSdummyupdate",
                "sp_MSscriptdb_worker",
                "sp_MSreplupdateschema",
                "sp_tables_info_rowset_64",
                "sp_replsetoriginator",
                "sp_serveroption",
                "fn_MSsharedversion",
                "sp_addremotelogin",
                "sp_addmergepullsubscription",
                "sp_MSsetlastrecgen",
                "sp_MSdbuseraccess",
                "sp_MSdefer_check",
                "sp_replsetsyncstatus",
                "sp_addserver",
                "sp_MSget_setup_paths",
                "sp_addtype",
                "sp_changemergepullsubscription",
                "sp_MSsetlastsentgen",
                "sp_MSdbuserpriv",
                "sp_MSreenable_check",
                "sp_table_constraints_rowset",
                "sp_replpostsyncstatus",
                "sp_setnetname",
                "sp_MSremoveoffloadparameter",
                "sp_altermessage",
                "sp_helpmergepullsubscription",
                "sp_MSenumgenerations",
                "sp_MShelpfulltextindex",
                "sp_getqueuedrows",
                "xp_dsninfo",
                "sp_helpserver",
                "sp_MSaddoffloadparameter",
                "sp_attach_db",
                "sp_addmergepullsubscription_agent",
                "sp_MScheckexistsgeneration",
                "sp_MShelpfulltextscript",
                "sp_MSprep_exclusive",
                "sp_table_privileges_rowset",
                "xp_enumdsn",
                "sp_helplinkedsrvlogin",
                "fn_MSgensqescstr",
                "sp_attach_single_file_db",
                "sp_MSget_mergepullsubsagent_owner",
                "sp_MSchecksnapshotstatus",
                "sp_MSSetServerProperties",
                "sp_verify_publication",
                "sp_linkedservers_rowset",
                "xp_oledbinfo",
                "sp_addlinkedsrvlogin",
                "sp_MSUpgradeConflictTable",
                "sp_helplanguage",
                "sp_dropmergepullsubscription",
                "sp_MSenumreplicas",
                "sp_MSGetServerProperties",
                "sp_scriptpublicationcustomprocs",
                "sp_table_statistics_rowset",
                "xp_repl_encrypt",
                "sp_droplinkedsrvlogin",
                "sp_MSsendtosqlqueue",
                "sp_bindefault",
                "sp_MSreplraiserror",
                "sp_MSenumdeletesmetadata",
                "fn_MSFullText",
                "sp_MSdrop_rlcore",
                "xp_repl_convert_encrypt",
                "sp_fulltext_getdata",
                "sp_adjustpublisheridentityrange",
                "sp_bindrule",
                "sp_check_sync_trigger",
                "sp_MSenumpartialdeletes",
                "sp_MSSharedFixedDisk",
                "sp_MSguidtostr",
                "xp_repl_help_connect",
                "sp_fulltext_service",
                "sp_MSestimatemergesnapshotworkload",
                "sp_checknames",
                "sp_check_for_sync_trigger",
                "sp_MSenumchanges",
                "sp_MSfilterclause",
                "sp_MSgetconflicttablename",
                "sp_oledb_column_constraints",
                "xp_replproberemsrv",
                "sp_fulltext_database",
                "sp_MSestimatesnapshotworkload",
                "sp_configure",
                "sp_MSpad_command",
                "sp_MSenumpartialchanges",
                "sp_MSgetalertinfo",
                "sp_MSuniqueobjectname",
                "sp_MSdrop_repltran",
                "sp_fulltext_catalog",
                "fn_serverid",
                "sp_dbremove",
                "sp_MSflush_command",
                "sp_MSinitdynamicsubscriber",
                "sp_MSsetalertinfo",
                "sp_MSuniquetempname",
                "sp_oledb_indexinfo",
                "sp_MSdrop_pub_tables",
                "sp_fulltext_table",
                "sp_MSdropfkreferencingarticle",
                "sp_create_removable",
                "sp_MSget_colinfo",
                "sp_MSgetrowmetadata",
                "xp_mergexpusage",
                "sp_MSuniquecolname",
                "sp_oledb_ro_usrname",
                "sp_MSarticlecolstatus",
                "sp_fulltext_column",
                "sp_addscriptexec",
                "sp_depends",
                "sp_MSget_col_position",
                "sp_MSgetmetadatabatch",
                "xp_showlineage",
                "sp_MSaddguidcolumn",
                "sp_oledb_deflang",
                "sp_MSarticlecol",
                "sp_help_fulltext_catalogs",
                "sp_MSmergeupdatelastsyncinfo",
                "sp_detach_db",
                "sp_MSget_map_position",
                "sp_MSsetrowmetadata",
                "xp_mergelineages",
                "sp_MSprepare_mergearticle",
                "sp_oledb_defdb",
                "sp_MScreate_pub_tables",
                "sp_help_fulltext_catalogs_cursor",
                "sp_MSsetcontext_replagent",
                "sp_diskdefault",
                "sp_MSget_type",
                "sp_MSinsertgenhistory",
                "xp_mapdown_bitmap",
                "sp_MSgetcolumnlist",
                "sp_oledb_database",
                "sp_MSsetfilterparent",
                "sp_help_fulltext_tables",
                "fn_isreplmergeagent",
                "sp_dropdevice",
                "sp_MSscript_where_clause",
                "sp_MSupdategenhistory",
                "xp_ORbitmap",
                "sp_MSaddguidindex",
                "sp_oledb_language",
                "sp_MSdoesfilterhaveparent",
                "sp_help_fulltext_tables_cursor",
                "sp_OACreate",
                "sp_dropmessage",
                "sp_MSscript_params",
                "sp_MSlocalizeinterruptedgenerations",
                "xp_proxiedmetadata",
                "sp_MSrefcnt",
                "sp_tablecollations",
                "sp_MSsetfilteredstatus",
                "sp_help_fulltext_columns",
                "sp_OADestroy",
                "sp_droptype",
                "sp_MSscript_procbodystart",
                "sp_MSenumschemachange",
                "xp_showcolv",
                "sp_MSgentablenickname",
                "sp_bcp_dbcmptlevel",
                "sp_MSretrieve_publication",
                "sp_help_fulltext_columns_cursor",
                "sp_OAGetErrorInfo",
                "sp_dropremotelogin",
                "sp_MSscript_begintrig1",
                "sp_MSenumschemachange_70",
                "xp_execresultset",
                "sp_MStablenickname",
                "sp_MSreplsup_table_has_pk",
                "sp_trace_getdata",
                "sp_OAGetProperty",
                "sp_helpconstraint",
                "sp_MSscript_begintrig2",
                "sp_MSenumschemachange_80",
                "xp_varbintohexstr",
                "sp_MStablenamefromnick",
                "sp_replsync",
                "sp_describe_cursor",
                "sp_OAMethod",
                "fn_dblog",
                "sp_MSscript_endtrig",
                "sp_MSupdateschemachange",
                "xp_intersectbitmaps",
                "sp_MSgetmakegenerationapplock",
                "sp_enumfullsubscribers",
                "sp_describe_cursor_columns",
                "sp_OASetProperty",
                "fn_helpcollations",
                "sp_MSscript_trigger_variables",
                "sp_MSremove_mergereplcommand",
                "xp_displayparamstmt",
                "sp_MSreleasemakegenerationapplock",
                "sp_addpublication",
                "sp_describe_cursor_tables",
                "sp_OAStop",
                "fn_trace_getinfo",
                "sp_MSscript_trigger_assignment",
                "sp_MSadd_mergereplcommand",
                "xp_printstatements",
                "sp_MSmakegeneration",
                "sp_changepublication",
                "sp_cursor_list",
                "xp_makewebtask",
                "fn_trace_geteventinfo",
                "sp_MSscript_trigger_fetch_statement",
                "sp_MSsetreplicainfo",
                "xp_createqueue",
                "sp_MSfixlineageversions",
                "sp_changesubscription",
                "xp_dropwebtask",
                "fn_trace_getfilterinfo",
                "sp_MSscript_trigger_exec_rpc",
                "sp_MSsetreplicastatus",
                "xp_createprivatequeue",
                "sp_MSaddupdatetrigger",
                "sp_helparticle",
                "xp_runwebtask",
                "fn_trace_gettable",
                "sp_MSscript_trigger_update_checks",
                "sp_MScreateglobalreplica",
                "xp_deletequeue",
                "sp_MSaddmergetriggers",
                "sp_MSis_col_replicated",
                "xp_cleanupwebtask",
                "fn_servershareddrives",
                "sp_MSscript_trigger_updates",
                "sp_MSsetconflictscript",
                "xp_deleteprivatequeue",
                "sp_MSchangeobjectowner",
                "sp_articlecolumn",
                "xp_enumcodepages",
                "fn_virtualfilestats",
                "sp_MSscript_trigger_version_updates",
                "sp_MSsetconflicttable",
                "sp_replsendtoqueue",
                "sp_MShelpdestowner",
                "sp_helparticlecolumns",
                "xp_convertwebtask",
                "fn_virtualservernodes",
                "sp_MSscript_singlerow_trigger",
                "sp_MSmakeconflictinsertproc",
                "sp_replwritetovarbin",
                "sp_MSfillupmissingcols",
                "sp_helppublication",
                "xp_readwebtask",
                "sp_helpdb",
                "sp_MSscript_multirow_trigger",
                "sp_MSmaketempinsertproc",
                "xp_resetqueue",
                "sp_MSmaptype",
                "sp_helpsubscription",
                "sp_makewebtask",
                "sp_helpdevice",
                "sp_MSscript_sync_ins_trig",
                "sp_MSgetconflictinsertproc",
                "xp_peekqueue",
                "sp_MSquerysubtype",
                "sp_articlefilter",
                "sp_dropwebtask",
                "sp_helpfile",
                "sp_MSscript_sync_upd_trig",
                "sp_MSinsertdeleteconflict",
                "xp_controlqueueservice",
                "sp_showrowreplicainfo",
                "sp_MSscript_article_view",
                "sp_runwebtask",
                "sp_helpfilegroup",
                "sp_MSscript_sync_del_trig",
                "sp_MScheckmetadatamatch",
                "xp_displayqueuemesgs",
                "sp_MSsethighestversion",
                "sp_articleview",
                "sp_cleanupwebtask",
                "sp_helpgroup",
                "sp_MSget_synctran_column",
                "sp_MSdelrow",
                "xp_decodequeuecmd",
                "sp_mergemetadataretentioncleanup",
                "sp_MSaddexecarticle",
                "sp_enumcodepages",
                "sp_helplog",
                "sp_addqueued_artinfo",
                "sp_MSsetartprocs",
                "xp_readpkfromqueue",
                "sp_MSdrop_rladmin",
                "sp_MSaddschemaarticle",
                "sp_convertwebtasks",
                "sp_helplogins",
                "sp_addsynctriggers",
                "sp_MSmakesystableviews",
                "xp_readpkfromvarbin",
                "sp_MSaddmergepub_snapshot",
                "sp_addarticle",
                "sp_readwebtask",
                "sp_helpindex",
                "sp_setreplfailovermode",
                "sp_MSgetchangecount",
                "xp_makecab",
                "sp_MSdropmergepub_snapshot",
                "sp_MSgettranconflictname",
                "xp_qv",
                "sp_helpstats",
                "sp_helpreplfailovermode",
                "sp_MSbelongs",
                "xp_unpackcab",
                "sp_MScheckatpublisher",
                "sp_MSmaketrancftproc",
                "sp_MSdrop_replcom",
                "sp_objectfilegroup",
                "sp_helpreplicationdboption",
                "sp_MSexpandbelongs",
                "sp_MSaddmergeschemaarticle",
                "xp_regread",
                "sp_changesubstatus",
                "sp_MScreate_distributor_tables",
                "sp_help",
                "sp_MScheck_agent_instance",
                "sp_MSexpandnotbelongs",
                "fn_repltrimleadingzerosinhexstr",
                "sp_addmergearticle",
                "xp_regwrite",
                "sp_addsubscription",
                "fn_getpersistedservernamecasevariation",
                "sp_helprotect",
                "sp_MSBumpupCompLevel",
                "sp_MSsetupbelongs_withoutviewproc",
                "fn_replinttobitstring",
                "sp_MSchangemergeschemaarticle",
                "xp_regdeletevalue",
                "sp_MSchangeschemaarticle",
                "sp_column_privileges",
                "sp_MSIfExistsRemoteLogin",
                "sp_helptext",
                "sp_MSCleanupForPullReinit",
                "sp_MSsetupnotbelongs",
                "fn_replbitstringtoint",
                "sp_changemergearticle",
                "xp_regaddmultistring",
                "sp_changearticle",
                "sp_helppublicationsync",
                "sp_helpuser",
                "sp_MSpublicationcleanup",
                "sp_MSsetupworktables",
                "fn_replrotr",
                "sp_MSadjustmergeidentity",
                "xp_regremovemultistring",
                "sp_droparticle",
                "sp_MSreplrole",
                "sp_indexoption",
                "sp_cleanupdbreplication",
                "sp_MSsetupbelongs",
                "fn_replgenerateshorterfilenameprefix",
                "sp_helpallowmerge_publication",
                "xp_regenumkeys",
                "sp_droppublication",
                "sp_addpublication_snapshot",
                "sp_lock",
                "sp_MSarticlecleanup",
                "sp_MSaddinitialarticle",
                "fn_replcomposepublicationsnapshotfolder",
                "sp_helpmergearticle",
                "xp_regenumvalues",
                "sp_dropsubscription",
                "sp_columns",
                "sp_MShelpobjectpublications",
                "sp_getapplock",
                "sp_MSdroparticleprocs",
                "sp_MSaddinitialschemaarticle",
                "sp_MSdroparticleconstraints",
                "sp_dropmergearticle",
                "xp_regdeletekey",
                "sp_subscribe",
                "sp_helpreplicationdb",
                "sp_releaseapplock",
                "sp_MSdroparticletriggers",
                "sp_msupg_removesystemcomputedcolumns",
                "sp_MSaddinitialpublication",
                "sp_MSacquireserverresourcefordynamicsnapshot",
                "sp_addmergepublication",
                "xp_instance_regread",
                "sp_unsubscribe",
                "sp_databases",
                "sp_helpdistributor",
                "sp_logdevice",
                "sp_mergesubscription_cleanup",
                "sp_MSaddinitialsubscription",
                "fn_replgetbinary8lodword",
                "sp_changemergepublication",
                "xp_instance_regwrite",
                "sp_refreshsubscriptions",
                "sp_enumdsn",
                "sp_helpremotelogin",
                "sp_subscription_cleanup",
                "sp_MSmakearticleprocs",
                "fn_replprepadbinary8",
                "sp_helpmergepublication",
                "xp_instance_regdeletevalue",
                "sp_MSpublishdb",
                "sp_enumoledbdatasources",
                "sp_helpsort",
                "sp_get_distributor",
                "sp_MSupdatesysmergearticles",
                "fn_replmakestringliteral",
                "sp_dropmergepublication",
                "xp_instance_regaddmultistring",
                "sp_MSactivate_auto_sub",
                "sp_helpsubscriberinfo",
                "sp_helpsql",
                "sp_MSrepl_addrolemember",
                "sp_MSexclause",
                "sp_MSgettranlastupdatedtime",
                "sp_mergearticlecolumn",
                "xp_instance_regremovemultistring",
                "sp_MSget_synctran_commands",
                "sp_datatype_info",
                "sp_replica",
                "sp_monitor",
                "sp_MSrepl_droprolemember",
                "sp_msupg_recreatecatalogfaketables",
                "sp_MSgetcolordinalfromcolname",
                "sp_MSgetmergelastupdatedtime",
                "sp_helpmergearticlecolumn",
                "xp_instance_regenumkeys",
                "sp_script_synctran_commands",
                "sp_addpublisher",
                "sp_processmail",
                "sp_table_validation",
                "sp_msupg_dosystabcatalogupgrades",
                "sp_MSinsertbeforeimageclause",
                "sp_MSgetlastupdatedtime",
                "sp_MSreinitmergepublication",
                "xp_instance_regenumvalues",
                "sp_MSaddpub_snapshot",
                "sp_addsubscriber",
                "sp_recompile",
                "sp_removedbreplication",
                "sp_msupg_dropcatalogcomputedcols",
                "sp_MSmakeinsertproc",
                "fn_replquotename",
                "sp_MSreinit_hub",
                "xp_instance_regdeletekey",
                "sp_MSis_pk_col",
                "sp_addsubscriber_schedule",
                "sp_remoteoption",
                "sp_removesrvreplication",
                "sp_msupg_createcatalogcomputedcols",
                "sp_MSmakeupdateproc",
                "fn_chariswhitespace",
                "sp_reinitmergesubscription",
                "xp_getprotocoldllinfo",
                "sp_MSmark_proc_norepl",
                "sp_fkeys",
                "sp_changesubscriber",
                "sp_invalidate_textptr",
                "sp_MSremovedbreplication",
                "sp_msupg_recreatesystemviews",
                "sp_MSmakeselectproc",
                "fn_generateparameterpattern",
                "sp_MSpublicationview",
                "xp_readerrorlog",
                "sp_MSdrop_expired_subscription",
                "sp_changesubscriber_schedule",
                "sp_tableoption",
                "sp_vupgrade_subscription_databases",
                "sp_msupg_upgradecatalog",
                "sp_MSdropconstraints",
                "fn_skipparameterargument",
                "sp_addmergesubscription",
                "sp_readerrorlog",
                "sp_MSscript_validate_subscription",
                "sp_distcounters",
                "sp_procoption",
                "sp_MScopyregvalue",
                "sp_MSinsertschemachange",
                "fn_removeparameterwithargument",
                "sp_MSretrieve_mergepublication",
                "xp_enumerrorlogs",
                "sp_MSvalidate_subscription",
                "sp_pkeys",
                "sp_droppublisher",
                "sp_renamedb",
                "sp_vupgrade_registry",
                "sp_MSgetviewcolumnlist",
                "fn_updateparameterwithargument",
                "sp_changemergesubscription",
                "sp_enumerrorlogs",
                "sp_MSscript_insert_statement",
                "sp_server_info",
            };

            Array.Sort(spList);
            Array.Reverse(spList);

            return spList;
        }

        #endregion Methods
    }
}